# 什么是序列化:指的是把内存的数据类型转化成一个特定的格式内容，改格式的内容可用于存储或者传输给其他平台使用
# 内存中的数据类型----->序列化--->特定格式(json格式或者pickle格式)
# 内存中的数据类型<------反序列化<-----特定的格式(json格式或者pickle格式)

# {'aaa':111}---->序列化str({'aaa':111})---->"{'aaa':1111}"

# {'aaa':111}<----反序列化eval({'aaa':111})<----"{'aaa':1111}"


# 为何要序列化
# 序列化得到的结果=》特定格式的内容用途:1.用于传输,2.给其他平台使用,跨平台数据交互

# 实现序列化与反序列化
# 序列化,方便存储
import json  # json 字符串必须双引号("")

res = json.dumps(True)
print(res, type(res))  # true <class 'str'>
res = json.dumps([12, 'aaa', True, False])
print(res, type(res))  # [12, "aaa", true, false] <class 'str'>
print(type([12, 'aaa', True, False]))  # <class 'list'>
# 将序列化的结果简单写入文件的复杂方法
with open('text.json', 'wt', encoding='utf-8') as f:
    f.write(res)
# 将序列化的结果简单写入文件的简单方法
with open('test.json', 'wt', encoding='utf-8') as f:
    json.dump([2, 'bbb', False, True], f)
json_res = json.dumps([12, 'aaa', True, False])
print(json_res,type(json_res))
l = json.loads(json_res)
print(l, type(l))

# 反序列化
with open('text.json', 'rt', encoding='utf-8') as f:
    json_res = f.read()
    l = json.loads(json_res)
    print(l, type(l))

